package com.marvels.financial.loan.dao;


import com.github.pagehelper.Page;
import com.marvels.financial.loan.dto.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface McfeCustomerLoanContractDao {
	/**插入合同信息
	 * @author 娄凯琦
	 * @date 2018年5月14日  
	 * @param mcfeCustomerRepaymentPlanDTO
	 */
	public void insertCustomerLoanContract(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);
	
	/**冲合同表咨询费
	 * @author 娄凯琦
	 * @date 2018年5月19日  
	 * @param mcfeLoanWithholdingDetailDTO
	 */
	public void updateContractByLoanId(McfeLoanWithholdingDetailDTO mcfeLoanWithholdingDetailDTO);
	
	/**
	 * 通过loanId更新合同
	 * @param mcfeCustomerLoanContractDTO
	 */
	public void updateContractInfoByLoanId(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);
	
	/**
	 * 通过loanId更新合同
	 * @param mcfeCustomerLoanContractDTO
	 */
	public void updateContractInfoByLoanId2(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);

	/**
	 * 通过loanId更新合同银行卡信息
	 * @param mcfeLoanWithholdingDetailDTO
	 */
	public void updateContractBankInfoByLoanId(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);
	
	
	/**
	 * 通过loanId更新合同状态
	 * @param mcfeLoanWithholdingDetailDTO
	 */
	public void updateContractStatusByLoanId(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);
	
	/**根据贷款ID查询合同
	 * @author 娄凯琦
	 * @date 2018年5月22日  
	 * @param mcfeCustomerLoanContractDTO
	 * @return
	 */
	public McfeCustomerLoanContractDTO selectContractByLoanId(String loanId);
	
	
	
	/**
	 * 根据身份证查询合同信息
	 * @param custIdNumber
	 * @return
	 */
	public Page<McfeCustomerLoanContractDTO> selectByCustIdNumber(@Param("custIdNumber") String custIdNumber);
	
	
	/**
	 * 查询合同信息
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public Page<ReplacePaymentApplyInfo> selectContract(ReplacePaymentConditionDto replacePaymentConditionDto);
	
	/**冲账更新,仅仅用于冲账,其他请自行写个新的
	 * @author 娄凯琦
	 * @date 2018年5月24日  
	 * @param mcfeCustomerLoanContractDTO
	 */
	public void updateContractById(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);//只能用于冲账更新金额,其他更新请自己写个新的
	
	
	/**
	 * 根据合同号更新罚息调整数据
	 * @param mcfeCustomerLoanContractDTO
	 */
	public int updateWaiveByContractId(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);
	
	
	/**
	 * 更新合同银行卡信息
	 * @param mcfeCustomerLoanContractDTO
	 * @return
	 */
	public int updateBankCardByLoanId(McfeCustomerLoanContractDTO mcfeCustomerLoanContractDTO);
	
	
	
	/**
	 * 查询可以进行手工代扣列表
	 * @param dto
	 * @return
	 */
	public Page<HandWithholdListDTO> selectWithholdApplyList(HandWithholdConditionDTO dto); 
	
	
	/**条件查询
	 * @param params
	 * @return
	 */
	public List<McfeCustomerLoanContractDTO> selectLoanContract(McfeCustomerLoanContractDTO params);
	
	/**
	 * 查询逾期loanId列表
	 * @param dto
	 * @return
	 */
	public List<String> overdueLoanList(ApprovalProcessConditionDTO dto);
	
	/**
	 * 查询出当天逾期数据
	 * @return
	 */
	public List<McfeCustomerLoanContractDTO> selectOverdueToday();
	
	/**
	 * 分期时使用的代还款列表查询
	 * @param replacePaymentConditionDto
	 * @return
	 */
	public Page<ReplacePaymentApplyInfo> newSelectContractReplace(ReplacePaymentConditionDto replacePaymentConditionDto);
		
	
	/**
	 *  分期模式下查询可代扣清单列表
	 * @param dto
	 * @return
	 */
	public Page<HandWithholdListDTO> newSelectWithholdApplyList(HandWithholdConditionDTO dto); 
}
